package com.yfker.td;

import androidx.annotation.NonNull;

import com.tinder.scarlet.Event;
import com.tinder.scarlet.WebSocket;
import com.tinder.scarlet.ws.Receive;
import com.tinder.scarlet.ws.Send;
import com.yfker.td.data.RealTimeModel;
import com.yfker.td.data.sync.ConfirmPutBottleWrapper;
import com.yfker.td.data.sync.ExitPutBottleWrapper;
import com.yfker.td.data.sync.HeartbeatModel;
import com.yfker.td.data.sync.PrePutBottleWrapper;
import com.yfker.td.data.sync.SyncEndInfusionWrapper;
import com.yfker.td.data.sync.SyncEquipmentInfoWrapper;
import com.yfker.td.data.sync.SyncPauseInfusionWrapper;
import com.yfker.td.data.sync.UnBindWrapper;

import io.reactivex.Flowable;

public interface ApiWebSocketService {

    @Receive
    @NonNull
    Flowable<WebSocket.Event> observeEvent();

    @Send
    boolean syncConfirmPutBottle(@NonNull ConfirmPutBottleWrapper var1);

    @Send
    boolean syncDeviceInfo(@NonNull SyncEquipmentInfoWrapper var1);

    @Send
    boolean syncPauseInfusion(@NonNull SyncPauseInfusionWrapper var1);

    @Send
    boolean syncStopInfusion(@NonNull SyncEndInfusionWrapper var1);

    @Send
    boolean sendHeartBeat(@NonNull HeartbeatModel var1);

    @Send
    boolean syncPrePutBottle(@NonNull PrePutBottleWrapper var1);

    @Send
    boolean syncExitPutBottle(@NonNull ExitPutBottleWrapper var1);

    @Send
    boolean unbind(@NonNull UnBindWrapper var1);

    @Receive
    @NonNull
    Flowable<RealTimeModel> observeData();
}
